home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2004 October / The Sunday Times - The Month 2004-10.iso / pc / assets / bespoke / kids / code / code_about.swf / scripts / FScrollBarSymbol.as next >
Text File  |  2004-09-08  |  14KB  |  402 lines

  1. FScrollBarClass = function()
  2. {
  3.    var _loc1_ = this;
  4.    if(_loc1_._height != 4)
  5.    {
  6.       _loc1_.init();
  7.       _loc1_.minPos = _loc1_.maxPos = _loc1_.pageSize = _loc1_.largeScroll = 0;
  8.       _loc1_.smallScroll = 1;
  9.       _loc1_.width = !_loc1_.horizontal ? _loc1_._height : _loc1_._width;
  10.       _loc1_._xscale = _loc1_._yscale = 100;
  11.       _loc1_.setScrollPosition(0);
  12.       _loc1_.tabEnabled = false;
  13.       if(_loc1_._targetInstanceName.length > 0)
  14.       {
  15.          _loc1_.setScrollTarget(_loc1_._parent[_loc1_._targetInstanceName]);
  16.       }
  17.       _loc1_.tabChildren = false;
  18.       _loc1_.setSize(_loc1_.width);
  19.    }
  20. };
  21. FScrollBarClass.prototype = new FUIComponentClass();
  22. FScrollBarClass.prototype.setHorizontal = function(flag)
  23. {
  24.    var _loc1_ = this;
  25.    var _loc2_ = flag;
  26.    if(_loc1_.horizontal && !_loc2_)
  27.    {
  28.       _loc1_._xscale = 100;
  29.       _loc1_._rotation = 0;
  30.    }
  31.    else if(_loc2_ && !_loc1_.horizontal)
  32.    {
  33.       _loc1_._xscale = -100;
  34.       _loc1_._rotation = -90;
  35.    }
  36.    _loc1_.horizontal = _loc2_;
  37. };
  38. FScrollBarClass.prototype.setScrollProperties = function(pSize, mnPos, mxPos)
  39. {
  40.    var _loc1_ = this;
  41.    if(_loc1_.enable)
  42.    {
  43.       _loc1_.pageSize = pSize;
  44.       _loc1_.minPos = Math.max(mnPos,0);
  45.       _loc1_.maxPos = Math.max(mxPos,0);
  46.       _loc1_.scrollPosition = Math.max(_loc1_.minPos,_loc1_.scrollPosition);
  47.       _loc1_.scrollPosition = Math.min(_loc1_.maxPos,_loc1_.scrollPosition);
  48.       if(_loc1_.maxPos - _loc1_.minPos <= 0)
  49.       {
  50.          _loc1_.scrollThumb_mc.removeMovieClip();
  51.          _loc1_.upArrow_mc.gotoAndStop(3);
  52.          _loc1_.downArrow_mc.gotoAndStop(3);
  53.          _loc1_.downArrow_mc.onPress = _loc1_.downArrow_mc.onRelease = _loc1_.downArrow_mc.onDragOut = null;
  54.          _loc1_.upArrow_mc.onPress = _loc1_.upArrow_mc.onRelease = _loc1_.upArrow_mc.onDragOut = null;
  55.          _loc1_.scrollTrack_mc.onPress = _loc1_.scrollTrack_mc.onRelease = null;
  56.          _loc1_.scrollTrack_mc.onDragOut = _loc1_.scrollTrack_mc.onRollOut = null;
  57.          _loc1_.scrollTrack_mc.useHandCursor = false;
  58.       }
  59.       else
  60.       {
  61.          var _loc2_ = _loc1_.getScrollPosition();
  62.          _loc1_.downArrow_mc.onRollOver = function()
  63.          {
  64.             this.gotoAndStop(2);
  65.          };
  66.          _loc1_.downArrow_mc.onRollOut = function()
  67.          {
  68.             this.gotoAndStop(1);
  69.          };
  70.          _loc1_.upArrow_mc.onRollOver = function()
  71.          {
  72.             this.gotoAndStop(2);
  73.          };
  74.          _loc1_.upArrow_mc.onRollOut = function()
  75.          {
  76.             this.gotoAndStop(1);
  77.          };
  78.          _loc1_.upArrow_mc.onPress = _loc1_.upArrow_mc.onDragOver = _loc1_.startUpScroller;
  79.          _loc1_.upArrow_mc.onRelease = _loc1_.upArrow_mc.onDragOut = _loc1_.stopScrolling;
  80.          _loc1_.downArrow_mc.onPress = _loc1_.downArrow_mc.onDragOver = _loc1_.startDownScroller;
  81.          _loc1_.downArrow_mc.onRelease = _loc1_.downArrow_mc.onDragOut = _loc1_.stopScrolling;
  82.          _loc1_.scrollTrack_mc.onPress = _loc1_.scrollTrack_mc.onDragOver = _loc1_.startTrackScroller;
  83.          _loc1_.scrollTrack_mc.onRelease = _loc1_.stopScrolling;
  84.          _loc1_.scrollTrack_mc.onDragOut = _loc1_.stopScrolling;
  85.          _loc1_.scrollTrack_mc.onRollOut = _loc1_.stopScrolling;
  86.          _loc1_.attachMovie("ScrollThumb","scrollThumb_mc",3);
  87.          _loc1_.scrollThumb_mc.onRollOver = function()
  88.          {
  89.             this.mc_sliderMid.gotoAndStop(10);
  90.          };
  91.          _loc1_.scrollThumb_mc.onRollOut = function()
  92.          {
  93.             this.mc_sliderMid.gotoAndStop(1);
  94.          };
  95.          _loc1_.scrollThumb_mc._x = 0;
  96.          _loc1_.scrollThumb_mc._y = _loc1_.upArrow_mc._height;
  97.          _loc1_.scrollThumb_mc.onPress = _loc1_.startDragThumb;
  98.          _loc1_.scrollThumb_mc.controller = _loc1_;
  99.          _loc1_.scrollThumb_mc.onRelease = _loc1_.scrollThumb_mc.onReleaseOutside = _loc1_.stopDragThumb;
  100.          _loc1_.thumbHeight = _loc1_.pageSize / (_loc1_.maxPos - _loc1_.minPos + _loc1_.pageSize) * _loc1_.trackSize;
  101.          _loc1_.thumbMid_mc = _loc1_.scrollThumb_mc.mc_sliderMid;
  102.          _loc1_.thumbTop_mc = _loc1_.scrollThumb_mc.mc_sliderTop;
  103.          _loc1_.thumbBot_mc = _loc1_.scrollThumb_mc.mc_sliderBot;
  104.          _loc1_.thumbHeight = Math.max(_loc1_.thumbHeight,6);
  105.          _loc1_.midHeight = _loc1_.thumbHeight - _loc1_.thumbTop_mc._height - _loc1_.thumbBot_mc._height;
  106.          _loc1_.thumbMid_mc._yScale = _loc1_.midHeight * 100 / _loc1_.thumbMid_mc._height;
  107.          _loc1_.thumbMid_mc._y = _loc1_.thumbTop_mc._height;
  108.          _loc1_.thumbBot_mc._y = _loc1_.thumbTop_mc._height + _loc1_.midHeight;
  109.          _loc1_.scrollTop = _loc1_.scrollThumb_mc._y;
  110.          _loc1_.trackHeight = _loc1_.trackSize - _loc1_.thumbHeight;
  111.          _loc1_.scrollBot = _loc1_.trackHeight + _loc1_.scrollTop;
  112.          _loc2_ = Math.min(_loc2_,_loc1_.maxPos);
  113.          _loc1_.setScrollPosition(Math.max(_loc2_,_loc1_.minPos));
  114.       }
  115.    }
  116. };
  117. FScrollBarClass.prototype.getScrollPosition = function()
  118. {
  119.    return this.scrollPosition;
  120. };
  121. FScrollBarClass.prototype.setScrollPosition = function(pos)
  122. {
  123.    var _loc1_ = this;
  124.    var _loc2_ = pos;
  125.    _loc1_.scrollPosition = _loc2_;
  126.    if(_loc1_.scrollThumb_mc != undefined)
  127.    {
  128.       _loc2_ = Math.min(_loc2_,_loc1_.maxPos);
  129.       _loc2_ = Math.max(_loc2_,_loc1_.minPos);
  130.    }
  131.    _loc1_.scrollThumb_mc._y = (_loc2_ - _loc1_.minPos) * _loc1_.trackHeight / (_loc1_.maxPos - _loc1_.minPos) + _loc1_.scrollTop;
  132.    _loc1_.executeCallBack();
  133. };
  134. FScrollBarClass.prototype.setLargeScroll = function(lScroll)
  135. {
  136.    this.largeScroll = lScroll;
  137. };
  138. FScrollBarClass.prototype.setSmallScroll = function(sScroll)
  139. {
  140.    this.smallScroll = sScroll;
  141. };
  142. FScrollBarClass.prototype.setEnabled = function(enabledFlag)
  143. {
  144.    var _loc1_ = this;
  145.    var _loc2_ = enabledFlag;
  146.    var _loc3_ = _loc1_.enable;
  147.    if(_loc2_ && !_loc3_)
  148.    {
  149.       _loc1_.enable = _loc2_;
  150.       if(_loc1_.textField != undefined)
  151.       {
  152.          _loc1_.setScrollTarget(_loc1_.textField);
  153.       }
  154.       else
  155.       {
  156.          _loc1_.setScrollProperties(_loc1_.pageSize,_loc1_.cachedMinPos,_loc1_.cachedMaxPos);
  157.          _loc1_.setScrollPosition(_loc1_.cachedPos);
  158.       }
  159.       _loc1_.clickFilter = undefined;
  160.    }
  161.    else if(!_loc2_ && _loc3_)
  162.    {
  163.       _loc1_.textField.removeListener(_loc1_);
  164.       _loc1_.cachedPos = _loc1_.getScrollPosition();
  165.       _loc1_.cachedMinPos = _loc1_.minPos;
  166.       _loc1_.cachedMaxPos = _loc1_.maxPos;
  167.       if(_loc1_.clickFilter == undefined)
  168.       {
  169.          _loc1_.setScrollProperties(_loc1_.pageSize,0,0);
  170.       }
  171.       else
  172.       {
  173.          _loc1_.clickFilter = true;
  174.       }
  175.       _loc1_.enable = _loc2_;
  176.    }
  177. };
  178. FScrollBarClass.prototype.setSize = function(hgt)
  179. {
  180.    var _loc1_ = this;
  181.    if(_loc1_._height != 1)
  182.    {
  183.       _loc1_.width = hgt;
  184.       _loc1_.scrollTrack_mc._yscale = 100;
  185.       _loc1_.scrollTrack_mc._yscale = 100 * _loc1_.width / _loc1_.scrollTrack_mc._height;
  186.       if(_loc1_.upArrow_mc == undefined)
  187.       {
  188.          _loc1_.attachMovie("UpArrow","upArrow_mc",1);
  189.          _loc1_.attachMovie("DownArrow","downArrow_mc",2);
  190.          _loc1_.downArrow_mc.controller = _loc1_.upArrow_mc.controller = _loc1_;
  191.          _loc1_.upArrow_mc._x = _loc1_.upArrow_mc._y = 0;
  192.          _loc1_.downArrow_mc._x = 0;
  193.       }
  194.       _loc1_.scrollTrack_mc.controller = _loc1_;
  195.       _loc1_.downArrow_mc._y = _loc1_.width - _loc1_.downArrow_mc._height;
  196.       _loc1_.trackSize = _loc1_.width - 2 * _loc1_.downArrow_mc._height;
  197.       if(_loc1_.textField != undefined)
  198.       {
  199.          _loc1_.onTextChanged();
  200.       }
  201.       else
  202.       {
  203.          _loc1_.setScrollProperties(_loc1_.pageSize,_loc1_.minPos,_loc1_.maxPos);
  204.       }
  205.    }
  206. };
  207. FScrollBarClass.prototype.scrollIt = function(inc, mode)
  208. {
  209.    var _loc1_ = this;
  210.    var _loc3_ = _loc1_.smallScroll;
  211.    if(inc != "one")
  212.    {
  213.       _loc3_ = _loc1_.largeScroll != 0 ? _loc1_.largeScroll : _loc1_.pageSize;
  214.    }
  215.    var _loc2_ = _loc1_.getScrollPosition() + mode * _loc3_;
  216.    if(_loc2_ > _loc1_.maxPos)
  217.    {
  218.       _loc2_ = _loc1_.maxPos;
  219.    }
  220.    else if(_loc2_ < _loc1_.minPos)
  221.    {
  222.       _loc2_ = _loc1_.minPos;
  223.    }
  224.    _loc1_.setScrollPosition(_loc2_);
  225. };
  226. FScrollBarClass.prototype.startDragThumb = function()
  227. {
  228.    var _loc1_ = this;
  229.    _loc1_.lastY = _loc1_._ymouse;
  230.    _loc1_.onMouseMove = _loc1_.controller.dragThumb;
  231. };
  232. FScrollBarClass.prototype.dragThumb = function()
  233. {
  234.    var _loc1_ = this;
  235.    _loc1_.scrollMove = _loc1_._ymouse - _loc1_.lastY;
  236.    _loc1_.scrollMove += _loc1_._y;
  237.    if(_loc1_.scrollMove < _loc1_.controller.scrollTop)
  238.    {
  239.       _loc1_.scrollMove = _loc1_.controller.scrollTop;
  240.    }
  241.    else if(_loc1_.scrollMove > _loc1_.controller.scrollBot)
  242.    {
  243.       _loc1_.scrollMove = _loc1_.controller.scrollBot;
  244.    }
  245.    _loc1_._y = _loc1_.scrollMove;
  246.    var _loc2_ = _loc1_.controller;
  247.    _loc2_.scrollPosition = Math.round((_loc2_.maxPos - _loc2_.minPos) * (_loc1_._y - _loc2_.scrollTop) / _loc2_.trackHeight) + _loc2_.minPos;
  248.    _loc1_.controller.isScrolling = true;
  249.    updateAfterEvent();
  250.    _loc1_.controller.executeCallBack();
  251. };
  252. FScrollBarClass.prototype.stopDragThumb = function()
  253. {
  254.    this.controller.isScrolling = false;
  255.    this.onMouseMove = null;
  256. };
  257. FScrollBarClass.prototype.startTrackScroller = function()
  258. {
  259.    var _loc1_ = this;
  260.    _loc1_.controller.trackScroller();
  261.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"page",-1);
  262. };
  263. FScrollBarClass.prototype.scrollInterval = function(inc, mode)
  264. {
  265.    var _loc1_ = this;
  266.    var _loc2_ = inc;
  267.    clearInterval(_loc1_.scrolling);
  268.    if(_loc2_ == "page")
  269.    {
  270.       _loc1_.trackScroller();
  271.    }
  272.    else
  273.    {
  274.       _loc1_.scrollIt(_loc2_,mode);
  275.    }
  276.    _loc1_.scrolling = setInterval(_loc1_,"scrollInterval",35,_loc2_,mode);
  277. };
  278. FScrollBarClass.prototype.trackScroller = function()
  279. {
  280.    var _loc1_ = this;
  281.    if(_loc1_.scrollThumb_mc._y + _loc1_.thumbHeight < _loc1_._ymouse)
  282.    {
  283.       _loc1_.scrollIt("page",1);
  284.    }
  285.    else if(_loc1_.scrollThumb_mc._y > _loc1_._ymouse)
  286.    {
  287.       _loc1_.scrollIt("page",-1);
  288.    }
  289. };
  290. FScrollBarClass.prototype.stopScrolling = function()
  291. {
  292.    var _loc1_ = this;
  293.    _loc1_.controller.downArrow_mc.gotoAndStop(1);
  294.    _loc1_.controller.upArrow_mc.gotoAndStop(1);
  295.    clearInterval(_loc1_.controller.scrolling);
  296. };
  297. FScrollBarClass.prototype.startUpScroller = function()
  298. {
  299.    var _loc1_ = this;
  300.    _loc1_.controller.upArrow_mc.gotoAndStop(2);
  301.    _loc1_.controller.scrollIt("one",-1);
  302.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"one",-1);
  303. };
  304. FScrollBarClass.prototype.startDownScroller = function()
  305. {
  306.    var _loc1_ = this;
  307.    _loc1_.controller.downArrow_mc.gotoAndStop(2);
  308.    _loc1_.controller.scrollIt("one",1);
  309.    _loc1_.controller.scrolling = setInterval(_loc1_.controller,"scrollInterval",500,"one",1);
  310. };
  311. FScrollBarClass.prototype.setScrollTarget = function(tF)
  312. {
  313.    var _loc1_ = this;
  314.    var _loc2_ = tF;
  315.    if(_loc2_ == undefined)
  316.    {
  317.       _loc1_.textField.removeListener(_loc1_);
  318.       delete _loc1_.textField[!_loc1_.horizontal ? "vScroller" : "hScroller"];
  319.       if(_loc1_.textField.hScroller != undefined && _loc1_.textField.vScroller != undefined)
  320.       {
  321.          _loc1_.textField.unwatch("text");
  322.          _loc1_.textField.unwatch("htmltext");
  323.       }
  324.    }
  325.    _loc1_.textField = undefined;
  326.    if(_loc2_ instanceof TextField)
  327.    {
  328.       _loc1_.textField = _loc2_;
  329.       _loc1_.textField[!_loc1_.horizontal ? "vScroller" : "hScroller"] = _loc1_;
  330.       _loc1_.onTextChanged();
  331.       _loc1_.onChanged = function()
  332.       {
  333.          this.onTextChanged();
  334.       };
  335.       _loc1_.onScroller = function()
  336.       {
  337.          var _loc1_ = this;
  338.          if(!_loc1_.isScrolling)
  339.          {
  340.             if(!_loc1_.horizontal)
  341.             {
  342.                _loc1_.setScrollPosition(_loc1_.textField.scroll);
  343.             }
  344.             else
  345.             {
  346.                _loc1_.setScrollPosition(_loc1_.textField.hscroll);
  347.             }
  348.          }
  349.       };
  350.       _loc1_.textField.addListener(_loc1_);
  351.       _loc1_.textField.watch("text",_loc1_.callback);
  352.       _loc1_.textField.watch("htmlText",_loc1_.callback);
  353.    }
  354. };
  355. FScrollBarClass.prototype.callback = function(prop, oldVal, newVal)
  356. {
  357.    var _loc1_ = this;
  358.    clearInterval(_loc1_.hScroller.synchScroll);
  359.    clearInterval(_loc1_.vScroller.synchScroll);
  360.    _loc1_.hScroller.synchScroll = setInterval(_loc1_.hScroller,"onTextChanged",50);
  361.    _loc1_.vScroller.synchScroll = setInterval(_loc1_.vScroller,"onTextChanged",50);
  362.    return newVal;
  363. };
  364. FScrollBarClass.prototype.onTextChanged = function()
  365. {
  366.    var _loc1_ = this;
  367.    if(!(!_loc1_.enable || _loc1_.textField == undefined))
  368.    {
  369.       clearInterval(_loc1_.synchScroll);
  370.       if(_loc1_.horizontal)
  371.       {
  372.          var _loc2_ = _loc1_.textField.hscroll;
  373.          _loc1_.setScrollProperties(_loc1_.textField._width,0,_loc1_.textField.maxhscroll);
  374.          _loc1_.setScrollPosition(Math.min(_loc2_,_loc1_.textField.maxhscroll));
  375.       }
  376.       else
  377.       {
  378.          _loc2_ = _loc1_.textField.scroll;
  379.          var _loc3_ = _loc1_.textField.bottomScroll - _loc1_.textField.scroll;
  380.          _loc1_.setScrollProperties(_loc3_,1,_loc1_.textField.maxscroll);
  381.          _loc1_.setScrollPosition(Math.min(_loc2_,_loc1_.textField.maxscroll));
  382.       }
  383.    }
  384. };
  385. FScrollBarClass.prototype.executeCallBack = function()
  386. {
  387.    var _loc1_ = this;
  388.    if(_loc1_.textField == undefined)
  389.    {
  390.       super.executeCallBack();
  391.    }
  392.    else if(_loc1_.horizontal)
  393.    {
  394.       _loc1_.textField.hscroll = _loc1_.getScrollPosition();
  395.    }
  396.    else
  397.    {
  398.       _loc1_.textField.scroll = _loc1_.getScrollPosition();
  399.    }
  400. };
  401. Object.registerClass("FScrollBarSymbol",FScrollBarClass);
  402.